彈珠射擊遊戲Demo-SmashSquash
彈珠射擊遊戲Demo-SmashSquash
前言
類似怪物彈珠的射擊遊戲製作,是學習類型的專案。
期間對C# OOP概念的進一步利用深入了解
著重於繼承的方面
嘗試使用event來開發遊戲
也實作了多個子系統,後續會一一介紹
DEMO
遊戲內容介紹
封面
載入介面
- LoadingSystem,處理載入進度條
- 包括異步加載場景的程式
- 負責處理遊戲中所有的場景載入
- RadioSystem,處理遊戲中的提示資訊
故事、教學介面
- StorySystem,故事主系統
- Flower plugin
- 用於載入Flower的設定
- 依靠註冊各類事件,來處理遊戲中相關文本的撥放
- 能夠靠著編寫故事腳本,來加快劇情對話的開發
大廳
- PlayerAccountSystem
- 處理玩家資料
- PlayerInfo
- 負責玩家資料的UGUI部分
背包介面
- PackageSystem,用於處理玩家背包資訊
- 透過長按單位,可以進入單位資訊介面
- 且能夠設置出戰隊伍
- PackagePage,同上,但負責UGUI部分
單位介面
- UnitInfoSystem,顯示單位資訊
- 能夠進行單位的強化
召喚介面
- SummonPool
- 透過list還存有的單位,進行抽卡
音量設置介面
關卡介面
- StageSystem,處理關卡的新增以及載入
- 關卡資訊是一個靜態類別,方便製作以及添加到關卡列表中
戰鬥介面
- 玩家的單位是綠框,敵人單位是紅框
- 包括小地圖系統、戰鬥設置系統、單位系統等等數個系統,放置在BattleScene資料夾底下
- 技能系統
- 射擊UI輔助
- 受傷效果
- 設定
各類系統
LoadingSystem
處理載入進度條
- 包括異步加載場景的程式
- 負責處理遊戲中所有的場景載入
/// <summary>
/// 異步加載場景
/// </summary>
/// <param name="sceneName">場景名稱</param>
/// <returns></returns>
IEnumerator LoadLevel(string sceneName)
{
AsyncOperation operation = SceneManager.LoadSceneAsync(sceneName); //預加載指定場景
while(operation.isDone == false)
{
loadingBar.value = operation.progress;
loadingText.text = "Loading......" + operation.progress * 100 + "%";
yield return null;
}
LoadingCanvas.SetActive(false);
}
RadioSystem
用於廣播提示資訊以及腳色資訊
以訊息類別來處理來源不同的訊息廣播
讓呼叫廣播系統的所有程式,只需要傳遞string參數即可
/// <summary>
/// 訊息類型
/// </summary>
public enum RadioType
{
System,
UnitSkill
}
StorySystem
故事主系統
- Flower plugin
- 用於載入Flower的設定
- 依靠註冊各類事件,來處理遊戲中相關文本的撥放
- 能夠靠著編寫故事腳本,來加快劇情對話的開發
[show]
[MusicSystem,Stop]
[audio,voidBgm,OpeningScene/openingVoid,true,0,audioTransit_1_1000]
[image,system,OpeningScene/systemEye,0,100,0,spFadeIn_1000]
機械式的聲音:甦醒了嗎? 契約者編號-R7549TY129。[w]
機械式的聲音:根據立維斯引渡條款、波特蘭帝國領土保衛守則、人型生命體援助基金會-第12條約定、......[w]
機械式的聲音:......、七顆星魔法議章之規範,湛金議程委員會下轄之褪色樂園已擁有契約者的完全解釋所有權。[w]
機械式的聲音:已發配智能助手R7型......[w]
機械式的聲音:......[w]
機械式的聲音:傳送完畢,後續引導將轉交由智能助手R7型進行[w]
[remove,system,spFadeOut_1000]
[remove,voidBgm,audioTransit_0_1000]
[MusicSystem,Start]
[hide]
[ReadedStory,openingIntro]
[LoadPage,MainScene]
PackageSystem && PackagePage
處理在背包介面所有的操作
- 遊戲中的單位會被註冊在圖鑑中,這個專案的單位是由一個MonoBehavior來做紀錄
- 故需要讓該物件一值存在於場景中
- 後續開發中,物件被註冊在靜態的Dictionary中
- 在遊戲開始後,將放在MonoBehavior的Prefabs載入
- 更加方便
彈珠射擊遊戲Demo-SmashSquash
https://z-hwa.github.io/webHome/[object Object]/Game-develope/彈珠射擊遊戲Demo-SmashSquash/